package cn.xenosp.server.common.tools;

import cn.hutool.core.net.URLDecoder;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.springframework.beans.BeanUtils;

import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

/**
 * 对象转换
 */
public class ObjectConvert {

    /**
     * 解析a=1&b=10 .... 为指定对象
     *
     * @param queryString
     * @param c
     * @param <T>
     * @return
     */
    public static <T> T urlStringToClass(String queryString, Class<T> c) {
        JSONObject keyValueMap = new JSONObject();
        // 将字符串按 & 分割成多个键值对
        String[] keyValuePairs = queryString.split("&");
        for (String pair : keyValuePairs) {
            // 再将每个键值对按 = 分割成键和值
            String[] keyValue = pair.split("=");
            if (keyValue.length == 2) {
                keyValueMap.set(keyValue[0], URLDecoder.decode(keyValue[1], StandardCharsets.UTF_8));
            }
        }
        return JSONUtil.toBean(keyValueMap, c);
    }

    /**
     * 把 vo 对象 转换成实体对象
     *
     * @param vo
     * @param entity
     */
    public static void copyVoToEntity(Object vo, Object entity) {
        BeanUtils.copyProperties(vo,entity,entity.getClass());
    }
}
